/**
 * __proto__: 所有普通对象都有
 * prototype: 只有函数才有（Function对象）
 */

function myInstanceof(leftValue, rightValue) {
    let rightProto = rightValue.prototype;
    leftValue = leftValue.__proto__;
    while(true) {
        // 左边实例没有原型
        if(leftValue === null) 
            return false;
        // 左边对象原型等于右边的函数的原型,说明这个对象是右边构造函数的实例
        if(leftValue === rightProto)
            return true;
        leftValue = leftValue.__proto__;
    }
}

console.log(myInstanceof(Object, Function));
console.log(myInstanceof(Array, Object));
console.log(myInstanceof(Array, Function));